The following files have been donated to the Public Domain by Dan Thomas: UnitXref.pas finds all units used by a program (as far as I can tell) ProgErr.pas handles program I/O errors & fatal errors FilExist.pas checks to see if a file exists PathID.pas combines a path and a file ID UnitXref makes some assumptions you should know about. First off, it has a typed constant telling it where to find units & include files. You should modify it as necessary for your environment. Secondly, it expects a reasonable syntax in the source(s) it scans. For instance, the following code will probably not be handled correctly: unit foo; interface uses bar; implementation In other words, place stuff on separate lines like: unit foo; interface uses bar; implementation etc Thirdly, this unit should handle comments OK. Fourthly (?), the source files for units are expected to have the extension of .PAS. Lastly, it quits scanning the units when it reaches the implementation section. The reason: I wrote this unit to help implement a function and procedure cross-reference. Only functions and procedures that are in the interface section can be referenced by other units/programs. Feel free to change this. As a matter of fact, feel free to change whatever you want. Just don't give me credit for it . Be well. Dan Thomas Compuserve: 72301,2164